package utiles;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

import componentes.Posicion;
import componentes.Terreno;

public class Rango {

	private Set listaDePosicionesDelRango;

	/**
	 * @param listaDePosicionesDelRango
	 */
	public Rango() {
		this.listaDePosicionesDelRango = new HashSet();
	}
	
	public Set obtenerPosionesDeRango(int coordenadaX,int coordenadaY,Terreno escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		if ((coordenadaX>0)&&(coordenadaY>0)&&(coordenadaX<escenario.getCANTIDAD_DE_COLUMNAS())&&(coordenadaY<escenario.getCANTIDAD_DE_FILAS()))
			listaDePosicionesDelRango=verExtremoMedio(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
		else
			if ((coordenadaX==0)&&(coordenadaY==0))
				listaDePosicionesDelRango=verExtremoSuperiorIzquierdo(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
			else
				if ((coordenadaX<escenario.getCANTIDAD_DE_COLUMNAS())&&(coordenadaY==0))
					listaDePosicionesDelRango=verExtremoMedioSuperior(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
				else
					if ((coordenadaX==escenario.getCANTIDAD_DE_COLUMNAS())&&(coordenadaY==0))
						listaDePosicionesDelRango=verExtremoSuperiorDerecho(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
					else
						if ((coordenadaX==0)&&(coordenadaY==escenario.getCANTIDAD_DE_FILAS()))
							listaDePosicionesDelRango=verExtremoInferiorIzquierdo(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
						else 
							if ((coordenadaX<escenario.getCANTIDAD_DE_COLUMNAS())&&(coordenadaY==escenario.getCANTIDAD_DE_FILAS()))
								listaDePosicionesDelRango=verExtremoMedioInferior(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
							else 
								if ((coordenadaX==escenario.getCANTIDAD_DE_COLUMNAS())&&(coordenadaY==escenario.getCANTIDAD_DE_FILAS()))
									listaDePosicionesDelRango=verExtremoInferiorDerecho(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
								else 
									if ((coordenadaX==0)&&(coordenadaY<escenario.getCANTIDAD_DE_FILAS()))
										listaDePosicionesDelRango=verExtremoMedioIzquierdo(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
									else if ((coordenadaX==escenario.getCANTIDAD_DE_COLUMNAS())&&(coordenadaY<escenario.getCANTIDAD_DE_FILAS()))
										listaDePosicionesDelRango=verExtremoMedioDerecho(coordenadaX, coordenadaY, escenario.getEscenarioDeJuego(), rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
		
		return listaDePosicionesDelRango; 
	}
	
	private Set verExtremoSuperiorIzquierdo(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
	     Set listaAuxiliar=new HashSet();
	     int contador=1;
	     if (espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados==0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + contador][coordenadaX + auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 // TODO: handle exception
		    		 contador=rango+1;
		    	 }
		    	 contador++;
		     }
	     }
	     
	     if (!(espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados==0)){ 
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador - 1 + espacioLibreEnLosCostados]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + contador][coordenadaX + auxiRango + espacioLibreEnLosCostados]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
		    		 // TODO: handle exception
		    	 }
		    	 contador++;
		     }
		     try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY + contador -1 + espacioLibreEnLosFrentes][coordenadaX]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + auxiRango + espacioLibreEnLosFrentes][coordenadaX + contador]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
		    		 // TODO: handle exception
		    	 }
		    	 contador++;
		     }
	     }
	     
	    /* if (espacioLibreEnLosFrentes!=0 && espacioLibreEnLosCostados==0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=1;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + contador][coordenadaX + auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
				// TODO: handle exception
		    	 }
		    	 contador++;
		     }
		     contador=0;
		     try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY + espacioLibreEnLosFrentes contador][coordenadaX]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     
	     }
	     
	     if (espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados!=0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador -1 + espacioLibreEnLosCostados]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + contador][coordenadaX + auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
				// TODO: handle exception
		    	 }
		    	 contador++;
		     }
	     }*/
	     return listaAuxiliar;
	}

	private Set verExtremoSuperiorDerecho(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		 Set listaAuxiliar=new HashSet();
	     int contador=1;
	     if (espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados==0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX - contador]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + contador][coordenadaX - auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 // TODO: handle exception
		    		 contador=rango+1;
		    	 }
		    	 contador++;
		     }
	     }
	     
	     if (!(espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados==0)){ 
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador - 1 - espacioLibreEnLosCostados]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + contador][coordenadaX - auxiRango - espacioLibreEnLosCostados]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
		    		 // TODO: handle exception
		    	 }
		    	 contador++;
		     }
		     try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY + contador -1 + espacioLibreEnLosFrentes][coordenadaX]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + auxiRango + espacioLibreEnLosFrentes][coordenadaX - contador]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
		    		 // TODO: handle exception
		    	 }
		    	 contador++;
		     }
	     }
	     
	    /* if (espacioLibreEnLosFrentes!=0 && espacioLibreEnLosCostados==0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX - contador]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=1;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + contador][coordenadaX - auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
				// TODO: handle exception
		    	 }
		    	 contador++;
		     }
		     contador=0;
		     try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY + espacioLibreEnLosFrentes + contador][coordenadaX]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
	     }
	     
	     if (espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados!=0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX - contador -1 - espacioLibreEnLosCostados]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY + contador][coordenadaX - auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
				// TODO: handle exception
		    	 }
		    	 contador++;
		     }
	     }*/
	     return listaAuxiliar;
	}

	
	private Set verExtremoInferiorIzquierdo(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		 Set listaAuxiliar=new HashSet();
	     int contador=1;
	     if (espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados==0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - contador][coordenadaX + auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 // TODO: handle exception
		    		 contador=rango+1;
		    	 }
		    	 contador++;
		     }
	     }
	     
	     if (!(espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados==0)){ 
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador - 1 + espacioLibreEnLosCostados]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - contador][coordenadaX + auxiRango + espacioLibreEnLosCostados]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
		    		 // TODO: handle exception
		    	 }
		    	 contador++;
		     }
		     try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY - contador -1 + espacioLibreEnLosFrentes][coordenadaX]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - auxiRango - espacioLibreEnLosFrentes][coordenadaX + contador]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
		    		 // TODO: handle exception
		    	 }
		    	 contador++;
		     }
	     }
	     
	    /* if (espacioLibreEnLosFrentes!=0 && espacioLibreEnLosCostados==0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=1;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - contador][coordenadaX + auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
				// TODO: handle exception
		    	 }
		    	 contador++;
		     }
		     contador=0;
		     try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY - espacioLibreEnLosFrentes - contador][coordenadaX]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
	     }
	     
	     if (espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados!=0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX + contador -1 + espacioLibreEnLosCostados]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - contador][coordenadaX + auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
				// TODO: handle exception
		    	 }
		    	 contador++;
		     }
	     }*/
	     return listaAuxiliar;
	}
	
	private Set verExtremoInferiorDerecho(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		 Set listaAuxiliar=new HashSet();
	     int contador=1;
	     if (espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados==0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX - contador]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - contador][coordenadaX - auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 // TODO: handle exception
		    		 contador=rango+1;
		    	 }
		    	 contador++;
		     }
	     }
	     
	     if (!(espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados==0)){ 
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX - contador - 1 - espacioLibreEnLosCostados]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - contador][coordenadaX - auxiRango - espacioLibreEnLosCostados]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
		    		 // TODO: handle exception
		    	 }
		    	 contador++;
		     }
		     
		     try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY - contador -1 - espacioLibreEnLosFrentes][coordenadaX]);
		     }
		     
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     
		     contador=1;
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - auxiRango - espacioLibreEnLosFrentes][coordenadaX - contador]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
		    		 // TODO: handle exception
		    	 }
		    	 contador++;
		     }
	     }
	     
	    /* if (espacioLibreEnLosFrentes!=0 && espacioLibreEnLosCostados==0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX - contador]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=1;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - contador][coordenadaX - auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
				// TODO: handle exception
		    	 }
		    	 contador++;
		     }
		     contador=0;
		     try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY - espacioLibreEnLosFrentes - contador][coordenadaX]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
	     }
	     
	     if (espacioLibreEnLosFrentes==0 && espacioLibreEnLosCostados!=0){
	    	 try{
		    	 for(;contador<=rango;contador++)
		    		 listaAuxiliar.add(escenario[coordenadaY][coordenadaX - contador -1 - espacioLibreEnLosCostados]);
		     }
		     catch (ArrayIndexOutOfBoundsException e) {
				// TODO: handle exception
		     }
		     contador=1
		     while (contador<=rango){
		    	 try{
		    		 int auxiRango=0;
		    		 for(;auxiRango<=rango;auxiRango++)
		    			 listaAuxiliar.add(escenario[coordenadaY - contador][coordenadaX - auxiRango]);
		    	 }
		    	 catch (ArrayIndexOutOfBoundsException e) {
		    		 contador=rango+1;
				// TODO: handle exception
		    	 }
		    	 contador++;
		     }
	     }*/
	     return listaAuxiliar;
	}

	private Set verExtremoMedioDerecho(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		 Set listaAuxiliar=new HashSet();
	     listaAuxiliar=verExtremoInferiorDerecho(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
	     listaAuxiliar.addAll(verExtremoSuperiorDerecho(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes));
	     return listaAuxiliar;
	}
	
	private Set verExtremoMedioIzquierdo(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		 Set listaAuxiliar=new HashSet();
	     listaAuxiliar=verExtremoInferiorIzquierdo(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
	     listaAuxiliar.addAll(verExtremoSuperiorIzquierdo(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes));
	     return listaAuxiliar;
	}
	
	private Set verExtremoMedioSuperior(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		 Set listaAuxiliar=new HashSet();
	     listaAuxiliar=verExtremoSuperiorDerecho(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
	     listaAuxiliar.addAll(verExtremoSuperiorIzquierdo(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes));
	     return listaAuxiliar;
	}
	
	private Set verExtremoMedioInferior(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		 Set listaAuxiliar=new HashSet();
	     listaAuxiliar=verExtremoInferiorDerecho(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
	     listaAuxiliar.addAll(verExtremoInferiorIzquierdo(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes));
	     return listaAuxiliar;
	}
	
	private Set verExtremoMedio(int coordenadaX,int coordenadaY,Posicion[][] escenario,int rango,int espacioLibreEnLosCostados,int espacioLibreEnLosFrentes) {
		 Set listaAuxiliar=new HashSet();
	     listaAuxiliar=verExtremoMedioIzquierdo(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes);
	     listaAuxiliar.addAll(verExtremoMedioDerecho(coordenadaX, coordenadaY, escenario, rango, espacioLibreEnLosCostados, espacioLibreEnLosFrentes));
	     return listaAuxiliar;
	}
	
}
